package service

import (
	"strings"
	"system-admin/internal/dao"
	"system-admin/internal/models"
	"system-admin/internal/utils"
)

// Service for User
type userService struct{}

// 获取用户服务对象
func GetUserService() (userService *userService) {
	return userService
}

// 用户注册
func (u *userService) AddUser(user *models.RegisterUser) (result bool) {
	//生成安全默认名称
	TempFullname := user.Username[3:8]
	fullname := strings.Replace(user.Username, TempFullname, "*****", -1)

	//生成MD5密码（MD5加密密码不可逆）
	MD5Password := utils.MD5Encode(user.Password)

	//插入数据
	dao.InsertUser(user.Username, MD5Password, fullname)
	return
}

// 根据用户名查询用户是否存在
func (u *userService) QueryUserExist(registerUser *models.RegisterUser) (result bool) {
	QueryResult := dao.QueryUserByUsername(registerUser.Username)
	if QueryResult == true {
		//成功查询
		result = true
	} else {
		//查询不到
		result = false
	}
	return
}

// 查询用户账号和密码是否匹配（登录专用）
func (u *userService) UserLogin(user *models.User) (result bool) {
	//MD5加密
	MD5Password := utils.MD5Encode(user.Password)
	//调用查询
	queryResult := dao.QueryUsernameAndPassword(user.Username, MD5Password)
	if queryResult == true {
		//成功登录
		result = true
	} else {
		//登录失败
		result = false
	}
	return
}

// 获取主页新注册导航排行榜
func (u *userService) QueryUserByLimitAndOrderByLevel() (userList *models.UserList, result bool, row int) {
	limitQuantity := 3 //默认为3

	userList, _, row = dao.QueryUserByLimitAndOrderByLevel(limitQuantity) //返回的数据列表，是否成功，查询到的行数

	////转数组方便后台查看用户
	//for i, v := range userList.User {
	//	log.Printf("%s:%v", i, v)
	//}

	if row != 0 {
		//成功查询
		result = true
	} else {
		//查询不到
		result = false
	}
	return
}
